home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Games for Windows (Nodtronics) / Over 1000 Games for Windows.iso / ARCADE / SSG / TECHINFO.TXT < prev   
Encoding:
Text File  |  1997-08-07  |  8.5 KB  |  430 lines

  1.  ----------------------------------------------------------
  2.  
  3. | TECHINFO.TXT - Explanations and technical info about SSG |
  4.  
  5. |----------------------------------------------------------|
  6.  
  7. |      by Chuck Lantz and Tom Darby for CS 257 - OOD,      |
  8.  
  9. |          Carleton College, Northfield, MN 55057.         |
  10.  
  11.  ----------------------------------------------------------
  12.  
  13.  
  14.  
  15. --------------------------------------------------------------------------
  16.  
  17.  
  18.  
  19.  ----------
  20.  
  21. | CONTENTS |
  22.  
  23.  ----------
  24.  
  25.  
  26.  
  27. I. Tech/design info
  28.  
  29.         i. Objectives
  30.  
  31.         ii. Objects
  32.  
  33.         iii. Speed considerations
  34.  
  35. II. The Game
  36.  
  37.         i. The plot and object of the game
  38.  
  39.         ii. Menu control
  40.  
  41.         iii. Player control
  42.  
  43. III. Closing comments
  44.  
  45.  
  46.  
  47. --------------------------------------------------------------------------
  48.  
  49.  
  50.  
  51.  -------------------
  52.  
  53. | I.i. - OBJECTIVES |
  54.  
  55.  -------------------
  56.  
  57.  
  58.  
  59. Spiffy Spaceguy (SSG) was written with the following criteria in mind:
  60.  
  61.  
  62.  
  63. 1)  Implementation of Object-Oriented Design techniques
  64.  
  65. 2)  A game that's fun to play
  66.  
  67. 3)  A game that's fast and will run on a 486 class machine
  68.  
  69.  
  70.  
  71. --------------------------------------------------------------------------
  72.  
  73.  
  74.  
  75.  -----------------
  76.  
  77. | I.ii. - OBJECTS |
  78.  
  79.  -----------------
  80.  
  81.  
  82.  
  83. Here are the basic objects in the game (NOTE: /,-, and \ denote an
  84.  
  85. inheritance):
  86.  
  87.  
  88.  
  89. Graphics objects
  90.  
  91. ----------------
  92.  
  93. Bitmap
  94.  
  95. Sprite
  96.  
  97. Font
  98.  
  99.  
  100.  
  101. Menu objects
  102.  
  103. ------------
  104.  
  105.          Main Menu
  106.  
  107.        /
  108.  
  109. Menu -|
  110.  
  111.        \
  112.  
  113.          Options Menu
  114.  
  115.  
  116.  
  117. Ship objects
  118.  
  119. ------------
  120.  
  121.          AI ships
  122.  
  123.        /
  124.  
  125. Ship -|- Player ship
  126.  
  127.       |\ 
  128.  
  129.       |  Shrapnel 
  130.  
  131.        \
  132.  
  133.          Booms
  134.  
  135.  
  136.  
  137. --------------------------------------------------------------------------
  138.  
  139.  
  140.  
  141.  -------------------------------
  142.  
  143. | I.iii. - SPEED CONSIDERATIONS |
  144.  
  145.  -------------------------------
  146.  
  147.  
  148.  
  149. Because of our third criterion (speed), we had to make some concessions to
  150.  
  151. the first objective.  Specifically, we used the "Spawn_Sprite" routines, and
  152.  
  153. did not break the AI ship routine into several other derived classes.
  154.  
  155.  
  156.  
  157. Why?  Well, we decided the fastest way to do collision detection was through
  158.  
  159. the use of a large "AI ship array" rather than splitting it up into several
  160.  
  161. smaller arrays.  This is faster as we do not have to traverse several arrays
  162.  
  163. and compare each element to each element in each array, but rather simply
  164.  
  165. have to traverse one single array.  As a result, we called weapons and
  166.  
  167. enemies AI ships and gave them values that allowed them to interact correctly.
  168.  
  169. This was MUCH faster than our original multiple derivation idea.  Adding
  170.  
  171. other ships to the AI ship class is quite simple, and only involves a case
  172.  
  173. statement.
  174.  
  175.  
  176.  
  177. Next, we note that all the images are also stored in one array.  Originally,
  178.  
  179. we had the system dynamically allocate storage for the image of each
  180.  
  181. ship as it was created, and deallocate as destroyed, but that turned out to
  182.  
  183. be quite slow and sucked up a large amount of RAM when a large number of
  184.  
  185. sprites were on the screen.  Thus, the array was created and the images are
  186.  
  187. accessed by way of an enumerated type which IS stored by each object.
  188.  
  189. (Thus we have a sort of pointer to an image stored rather than the image
  190.  
  191. itself.)
  192.  
  193.  
  194.  
  195. Finally, the spawn sprite issue.  Since we needed classes to create large
  196.  
  197. numbers of objects from different classes, we needed some method for them
  198.  
  199. to "spawn" (or create) a new object quickly and efficiently.  The
  200.  
  201. "Spawn_Sprite" functions were our answer.  They are simply inline functions
  202.  
  203. that declare a object to be "active" and give it some important starting
  204.  
  205. information.  Note that these functions are overloaded (and have default
  206.  
  207. values for object specific information) and thus allow us to call "one
  208.  
  209. function" to activate any object type.
  210.  
  211.  
  212.  
  213. In this current version we do not have the system check for speed and
  214.  
  215. decide on how many sprites should be active (this will be added later),
  216.  
  217. so we have the OPTIONS menu which allows you to reduce the number of objects
  218.  
  219. on the screen on slower machines.
  220.  
  221.  
  222.  
  223. --------------------------------------------------------------------------
  224.  
  225.  
  226.  
  227.  -----------------------------------------
  228.  
  229. | II.i. - THE PLOT AND OBJECT OF THE GAME |
  230.  
  231.  -----------------------------------------
  232.  
  233.  
  234.  
  235. ( NOTE: Spiffy Spaceguy I is also known as Spaceman Spiff and was changed
  236.  
  237.   for copyright reasons.  This game is based upon SSG I which was created
  238.  
  239.   by Tom Darby for CS117. )
  240.  
  241.  
  242.  
  243. THE PLOT
  244.  
  245. --------
  246.  
  247. When we last saw our hero, he was returning home to Earth after vanquishing
  248.  
  249. the evil Gorkon Armada and foiling their plot to destroy the universe as
  250.  
  251. we know it.  In anticipation of a hero's welcome (and party), Spiffy Spaceguy
  252.  
  253. was pouring his first celebritory martini, envisioning the grand gala
  254.  
  255. reception that awaited him.
  256.  
  257.  
  258.  
  259. SUDDENLY, a panicked voice crackled over the radio.  Stirred but unshaken
  260.  
  261. (ha ha), Spiffy Spaceguy turned to the controls of his ship and listened...
  262.  
  263.  
  264.  
  265. "MAYDAY, MAYDAY!  We are under attack by the K'irjnarr fleet!  We can't stop
  266.  
  267. them, there's--there's too many--anyone, help!  Come in!  Stop them before
  268.  
  269. they reach Earth!  No, no!  Oh, the humanit-- *KSHZZZZZZT*
  270.  
  271.  
  272.  
  273. Cursing, Spiffy Spaceguy threw his martini glass out the window (ha ha)
  274.  
  275. and punched in the hyperdrive.  Like it or not, he knew that he was
  276.  
  277. the only pilot good enough to stop the massive K'irjnarr fleet and save
  278.  
  279. Earth.  With a blinding flash, Spiffy Spaceguy's ship leapt forward, 
  280.  
  281. disappearing into the vast emptiness that is space...
  282.  
  283.  
  284.  
  285. His celebration will have to wait.
  286.  
  287.  
  288.  
  289. THE OBJECTIVE
  290.  
  291. -------------
  292.  
  293. When the game begins, Spiffy Spaceguy has just caught up to the evil
  294.  
  295. K'irjnaar's first wave of ships headed towards Earth. Spiff must fight his way
  296.  
  297. through them in an attempt to help decimate the fleet's multitudes and
  298.  
  299. save Earth.  He will have to make it through countless onslaughts of
  300.  
  301. K'irjnaar ships and mine fields to ultimately save the universe.
  302.  
  303.  
  304.  
  305. --------------------------------------------------------------------------
  306.  
  307.  
  308.  
  309.  -----------------------
  310.  
  311. | II.ii. - MENU CONTROL |
  312.  
  313.  -----------------------
  314.  
  315.  
  316.  
  317. When the game starts, the "Squeal! Production" sign will appear.  If you press
  318.  
  319. a key then, you will advance to the menu.  If you don't, you will enter the
  320.  
  321. introduction.  (If you choose to see the introduction, hit a key to make
  322.  
  323. the next section of text scroll up.)
  324.  
  325.  
  326.  
  327. Once the title screen appears, hit a key and the main menu will show up.
  328.  
  329. Press up and down to move the spaceship next to the option you want to select
  330.  
  331. and press enter.  These options are:
  332.  
  333.  
  334.  
  335. NEW GAME - Begins a new game from WAVE 1.
  336.  
  337. CONTINUE - If you died, this will start you from the wave you died on, but
  338.  
  339.            will set your score to 0.
  340.  
  341. OPTIONS  - This goes to the Options menu
  342.  
  343. QUIT     - Quits the game
  344.  
  345.  
  346.  
  347. If you choose to go to the options menu, you will see a list of these settings:
  348.  
  349.  
  350.  
  351. MAX SHRAPNEL    - The maximum amount of shrapnel that can be on the screen
  352.  
  353.                   at any one time.
  354.  
  355. BOOM SHRAPNEL   - The amount of shrapnel launched when a ship explodes
  356.  
  357. MAX BOOMS       - The maximum number of "booms" (oof, thud, blammo, etc..)
  358.  
  359.                   that can be on the screen at any time.
  360.  
  361. MAX SPRITES     - The maximum number of gunshots and AIs that can be on the
  362.  
  363.                   screen at any time.
  364.  
  365. STARS PER LEVEL - The number of stars at each scroller level
  366.  
  367. SOUND SETUP     - Currently not implemented.
  368.  
  369.  
  370.  
  371. Press the left and right arrow keys to change these settings, and press
  372.  
  373. ESC when you are done.
  374.  
  375.  
  376.  
  377. --------------------------------------------------------------------------
  378.  
  379.  
  380.  
  381.  --------------------------
  382.  
  383. | II.iii. - PLAYER CONTROL |
  384.  
  385.  --------------------------
  386.  
  387.  
  388.  
  389. You control Spiffy Spaceguy's ship via the mouse.  Pressing the left
  390.  
  391. mouse button will cause this ship's weapon to fire, and the right mouse
  392.  
  393. button selects which weapon you use.  Pressing the mouse button will cause
  394.  
  395. the newly selected weapon to flash just under the status bar on the game
  396.  
  397. screen.
  398.  
  399.  
  400.  
  401. Other keys of interest:
  402.  
  403.  
  404.  
  405. P   - Pauses the game.
  406.  
  407. ESC - Aborts your current game.
  408.  
  409.  
  410.  
  411. --------------------------------------------------------------------------
  412.  
  413.  
  414.  
  415.  ------------------------
  416.  
  417. | IV. - CLOSING COMMENTS |
  418.  
  419.  ------------------------
  420.  
  421.  
  422.  
  423. Chuck and Tom put a great deal of effort into this project, but had a great
  424.  
  425. time doing it.  We hope you enjoy the game!!!
  426.  
  427.  
  428.  
  429.  
  430.